package mediatheque.model;

import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;



public class PretModel extends AbstractModel{

	private static final long serialVersionUID = 6081449871529205696L;
	private String identifiant;
	private String identifiantDocument;
	private String dateEmprunt;
	private String dateRetourLimite;
	private String dateRetourEffectif;
	private String identifiantEmprunteur;
	private static int NOMBRE_PRET=0;
	
	public PretModel() {
		this("n/a",new Date(),new Date(),new Date(),"n/a");
	}
	public PretModel(String identifiantDocument, Date dateEmprunt, Date dateRetourLimite, Date dateRetourEffectif, String identifiantEmprunteur) {
		this.identifiantDocument = identifiantDocument;
		
		Calendar c1 = Calendar.getInstance();
		DateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy");		
		this.dateEmprunt = dateFormat.format(c1.getTime());

		c1.add(Calendar.MONTH,2);
		this.dateRetourLimite = dateFormat.format(c1.getTime());
		this.dateRetourEffectif = "";
		this.identifiantEmprunteur = identifiantEmprunteur;
		NOMBRE_PRET++;
		setIdentifiant(genererIdentifiant());
	}
	
	private String genererIdentifiant() {
		return "PR-"+NOMBRE_PRET;
	}
	
	/* getter */
	public String getIdentifiant() {
		return identifiant;
	}
	public String getIdentifiantDocument() {
		return identifiantDocument;
	}
	public String getDateEmprunt() {
		return dateEmprunt;
	}
	public String getDateRetourLimite() {
		return dateRetourLimite;
	}
	public String getDateRetourEffectif() {
		return dateRetourEffectif;
	}
	public String getIdentifiantEmprunteur() {
		return identifiantEmprunteur;
	}
	/* setter */
	public void setIdentifiant(String ident) {
		identifiant = ident;
	}
	public void setIdentifiantDocument(String identDocument) {
		identifiantDocument = identDocument;
	}
	public void setDateEmprunt(String date) {
		dateEmprunt = date;
	}
	public void setDateRetourLimite(String date) {
		dateRetourLimite = date;
	}
	public void setDateRetourEffectif(String date) {
		dateRetourEffectif = date;
	}
	public void setIdentifiantEmprunteur(String s) {
		identifiantEmprunteur = s;
	}
	
	private void writeObject(ObjectOutputStream oos) throws IOException {
		oos.defaultWriteObject();
		oos.writeObject(new Integer(NOMBRE_PRET));
	}
	
	public boolean estTermine(){
		return !dateRetourEffectif.equals("");
	}

	private void readObject(ObjectInputStream ois)
			throws ClassNotFoundException, IOException {
		ois.defaultReadObject();
		NOMBRE_PRET = (Integer) ois.readObject();
	}
	public boolean ressemble(String id, String dateE, String dateL) {
		return (getIdentifiant().toLowerCase().contains(id.toLowerCase()) &&
				getDateEmprunt().toLowerCase().contains(dateE.toLowerCase()) &&
				getDateRetourLimite().toLowerCase().contains(dateL.toLowerCase()));
	}
}
